/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package edu.ucsur.libreriaelsaber.actions;

import edu.ucsur.libreriaelsaber.beans.UsuarioBean;
import edu.ucsur.libreriaelsaber.data.DAOFactory;
import edu.ucsur.libreriaelsaber.data.UsuarioDAO;
import edu.ucsur.libreriaelsaber.forms.LoginForm;
import edu.ucsur.libreriaelsaber.forms.UsuarioForm;
import java.text.SimpleDateFormat;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;

/**
 *
 * @author Administrator
 */
public class UsuarioAction extends DispatchAction {
  
  //Instanciando el DAOFactory (clase que se encarga de fabricar los objetos DAO)
  private DAOFactory factory = DAOFactory.getFactory(DAOFactory.TIPO_MYSQL);
  
  public ActionForward listado(ActionMapping mapping, ActionForm form,
                               HttpServletRequest request,
                               HttpServletResponse response) throws Exception {
    UsuarioDAO usuarioDao = factory.getUsuarioData();
    UsuarioForm usuarioFrm = (UsuarioForm)form;
    //Obteniendo la info de la BD en una colección Java (de UsuarioBean)
    List<UsuarioBean> lista = usuarioDao.getListaUsuariosPorFiltros("", "");
    usuarioFrm.setListaUsuarios(lista);
    return mapping.getInputForward();
  }
  
  public ActionForward nuevo(ActionMapping mapping, ActionForm form,
                             HttpServletRequest request,
                             HttpServletResponse response) throws Exception {
    UsuarioForm usuarioFrm = (UsuarioForm)form;
    usuarioFrm.setUsuario(new UsuarioBean());
    request.setAttribute("accion", "nuevo");
    request.setAttribute("tituloFormUsuario", "Nuevo Usuario");
    return mapping.findForward("nuevo");
  }
  
  public ActionForward editar(ActionMapping mapping, ActionForm form,
                              HttpServletRequest request,
                              HttpServletResponse response) throws Exception {
    UsuarioDAO usuarioDao = factory.getUsuarioData();
    UsuarioForm usuarioFrm = (UsuarioForm)form;
    String claveFila = request.getParameter("claveFila");
    UsuarioBean usuario = usuarioDao.getUsuario(claveFila);
    usuarioFrm.setUsuario(usuario);
    request.setAttribute("accion", "editar");
    request.setAttribute("tituloFormUsuario", "Editar Usuario: " + usuario.getCodigoUsuario());
    return mapping.findForward("editar");
  }

  public ActionForward eliminar(ActionMapping mapping, ActionForm form,
                                HttpServletRequest request,
                                HttpServletResponse response) throws Exception {
    UsuarioDAO usuarioDao = factory.getUsuarioData();
    UsuarioForm usuarioFrm = (UsuarioForm)form;
    String claveFila = request.getParameter("claveFila");
    usuarioDao.eliminar(claveFila);
    return mapping.findForward("eliminar");
  }

  public ActionForward guardar(ActionMapping mapping, ActionForm form,
                               HttpServletRequest request,
                               HttpServletResponse response) throws Exception {
    UsuarioDAO usuarioDao = factory.getUsuarioData();
    UsuarioForm usuarioFrm = (UsuarioForm)form;
    //Obteniendo los valores de los controles HTML (form_usuario.jsp)
    String esNuevo = request.getParameter("esNuevo");
    //Guardar la info en la BD
    if (esNuevo.equals("true")) {
      usuarioDao.insertar(usuarioFrm.getUsuario());
    } else {
      usuarioDao.actualizar(usuarioFrm.getUsuario());
    }
    return mapping.findForward("success");
  }
  
  public ActionForward cancelar(ActionMapping mapping, ActionForm form,
                                HttpServletRequest request,
                                HttpServletResponse response) throws Exception {
    return mapping.findForward("cancel");
  }
  
}
